﻿<!DOCTYPE html>
<html>
	<head>
		<title>Sqrat - Squirrel Binding Utility</title>
		
		<link type="text/css" href="style.css" rel="stylesheet" />
	</head>
	
	<body>
	
	<div id="header">
		<h1>Sqrat - Squirrel Binding Utility</h1>
		<h3>(c) 2009 Brandon Jones</h3>
	</div>
		
	<div id="index">
		<h2>Table of Contents</h2>
		
		<ul>
			<li><a href="index.html">Home</a>
				<ul>
					<li><a href="#download">Downloads</a></li>
					<li><a href="#introduction">Introduction</a></li>
					<li><a href="#features">Features</a></li>
					<li><a href="#license">License</a></li>
					<li><a href="#contact">Contact Information</a></li>
				</ul>
			</li>
			<li><a href="binding.html">Binding Library</a></li>
			<li><a href="import.html">Module Import Library</a></li>
			<li><a href="threading.html">Threading Library</a></li>
		</ul>
	</div>
		
	<div id="text">
	
		<h2 id="download">Downloads</h2>
		
		<p>The latest version of Sqrat can be downloaded from <a href="http://sourceforge.net/projects/scrat">SourceForge</a></p>
		
		<h2 id="introduction">Introduction</h2>

		<p>Sqrat is a C++ library for Squirrel that facilitates exposing classes 
		and other native functionality to Squirrel scripts. It is similar to 
		SqPlus, both in functionality and syntax, but seeks to address several 
		issues present in other binding libraries.</p>
		
		<p>Sqrat models the underlying Squirrel API a little more closely than most 
		other binding utilities, and this fact gives it a lot of power in 
		exchange for a couple of minor quirks in the syntax. Code is 
		straightforward and easy to read, however, and can easily be ported to 
		from existing bindings.</p>
		
		<p>Beginning in Sqrat 0.8, several utilitiy libraries are also included
		to extend the squirrel language itself with useful libraries and 
		functionalities.</p>
		
		<p>Sqrat has been tested against Squirrel 2.1.1 through 2.2.3. Other 
		versions may work fine, but the author makes no promises!</p>
		
		<h2 id="features">Features</h2>
		
		<ul>  
			<li>zlib/libpng Licensed (Same as Squirrel)</li>
			<li>ASCII and Unicode Support</li>
			<li>32 Bit and 64 Bit Squirrel Support</li>
			<li>Includes multiple unit tests to demonstrate and verify functionality</li>
			<li>Binding Library
				<ul>
					<li>Supports multiple Virtual Machines concurrently</li>
					<li>Header only (no libraries to link)</li>
					<li>Customizable
						<ul>
							<li>User may specialize allocators and variable translators for custom types if needed</li>
						</ul>
					</li>
					<li>Classes
						<ul>
							<li>Bind Member or Static variables and functions</li>
							<li>Bind Global functions as Member functions</li>
							<li>Bind Overloaded Member functions</li>
							<li>Properties - Variables accessed via setter and getter functions</li>
						</ul>
					</li>
					<li>Tables
						<ul>
							<li>Bind Global functions and variables</li>
							<li>Bind Overloaded Global functions</li>
							<li>Can be used to support Namespaces</li>
						</ul>
					</li>
					<li>Constants and Enumerations
						<ul>
							<li>True support for compile time constant and enumeration values</li>
						</ul>
					</li>
					<li>Objects
						<ul>
							<li>HSQOBJECT Smart-pointer</li>
							<li>Provides simple lookup and casting capabilities</li>
						</ul>
					</li>
					<li>Functions
						<ul>
							<li>Exposes Squirrel functions for calling from C++</li>
						</ul>
					</li>
					<li>Script Helpers
						<ul>
							<li>Load and run scripts from string or file</li>
							<li>Save compiled scripts to file</li>
						</ul>
					</li>
				</ul>
			</li>
			<li>Module Import Library</li>
			<li>Threading Utilities</li>
		</ul>
		
		<h2 id="license">License</h2>

		<p>Sqrat is licensed under the zlib/libpng license:</p>
		
	<pre>
	Copyright (c) 2009 Brandon Jones
	
	This software is provided 'as-is', without any express or implied
	warranty. In no event will the authors be held liable for any damages
	arising from the use of this software.
	
	Permission is granted to anyone to use this software for any purpose,
	including commercial applications, and to alter it and redistribute it
	freely, subject to the following restrictions:
	
	1. The origin of this software must not be misrepresented; you must not
	claim that you wrote the original software. If you use this software
	in a product, an acknowledgment in the product documentation would be
	appreciated but is not required.
	
	2. Altered source versions must be plainly marked as such, and must not be
	misrepresented as being the original software.
	
	3. This notice may not be removed or altered from any source
	distribution.
	</pre>
	
		<p>What this means in plain English is essentially that you are welcome to do 
		anything you want with the code for any purpose, but cannot claim that you
		wrote the library. Also, any time you redistribute the source, the license
		must be attached to it.</p>
		
		<p>As far as giving credit goes: I personally don't care if you give me credit
		or not when you use Sqrat, but I would love to hear about projects that it's
		used in!</p>
		
		<h2 id="contact">Contact Information</h2>

		Brandon Jones (Toji) - tojiro (at) gmail (dot) com
	</div>
	</body>
</html>